home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Wonky Flux Batch 2019 02
/
Wonky_Flux_Batch_2019-02.zip
/
Wonky Flux Batch 2019-02
/
089 - Misc Stuff - PD.dsk
/
MACRO LIBRARY.S
< prev
next >
Wrap
Text File
|
2019-02-17
|
5KB
|
305 lines
******************
* *
* MACRO LIBRARY *
* *
* WITH 3 PROGRAM *
* EXAMPLES *
* *
* 7/1/81 *
* *
* USE AS A GUIDE *
* *
******************
CH = $24
PRNTAX = $F941
TABV = $FB5B
COUT = $FDED
DO 0
INCR MAC
INC ]1
BNE NC
INC ]1+1
NC <<<
DECR MAC
LDA ]1
BNE ND
DEC ]1+1
ND DEC ]1
<<<
TR MAC
LDA ]1
STA ]2
<<<
STIND MAC
>>> TR.]1 ;(]2),Y
INY
>>> TR.]1+1 ;(]2),Y
<<<
LDIND MAC
>>> TR.(]1),Y ;]2
INY
>>> TR.(]1),Y ;]2+1
<<<
TRANS MAC
>>> TR.]1 ;]2
>>> TR.]1+1 ;]2+1
<<<
ADD MAC
CLC
LDA ]1
ADC ]2
STA ]3
LDA ]1+1
ADC ]2+1
STA ]3+1
<<<
SUB MAC
SEC
LDA ]1
SBC ]2
STA ]3
LDA ]1+1
SBC ]2+1
STA ]3+1
<<<
ADDX MAC
TXA
CLC
ADC ]1
STA ]2
LDA ]1+1
ADC #0
STA ]2+1
<<<
ADDY MAC
TYA
CLC
ADC ]1
STA ]2
LDA ]1+1
ADC #0
STA ]2+1
<<<
ADDNUM MAC
LDA #]1
CLC
ADC ]2
STA ]2
BCC NI
INC ]2+1
NI <<<
SWAP MAC
LDA ]1
PHA
LDA ]2
STA ]1
PLA
STA ]2
<<<
COMPARE MAC
LDA ]1
CMP ]2
LDA ]1+1
SBC ]2+1
<<<
CMPADRS MAC
LDA ]1
CMP #<]2
LDA ]1+1
SBC #>]2
<<<
POKE MAC
>>> TR.#]2 ;]1
<<<
SETPNT MAC
>>> POKE.]1 ;]2
>>> POKE.]1+1 ;>]2
<<<
CMPSTR MAC
LP LDA (]2),Y
ORA #%10000000
CMP ]1,Y
BNE OUT
DEY
BPL LP
INY
OUT <<<
PRCHR MAC
LDA #]1
JSR COUT
<<<
PRADRS MAC
LDX ]1
LDA ]1+1
JSR PRNTAX
<<<
GOTOXY MAC
>>> POKE.CH ;]1
LDA #]2
JSR TABV
<<<
MESSAGE MAC
LDY #0
MLP LDA ]1,Y
BEQ SENT
JSR COUT
INY
BNE MLP
SENT <<<
FIN
***** EXAMPLES ******
EXAMPLE KBD
*********************
* EXAMPLE 1
*(PRINT BLOAD ADDRESS AND LENGTH)
DO EXAMPLE-1
ELSE
BLEN = $AA60
BLADRS = $AA72
HOME = $FC58
ORG $300
JSR HOME
>>> GOTOXY.5 ;10
>>> PRCHR."A"
>>> PRCHR."$"
>>> PRADRS.BLADRS
>>> PRCHR.","
>>> PRCHR."L"
>>> PRCHR."$"
>>> PRADRS.BLEN
RTS
FIN
*********************
* EXAMPLE 2
*(FIND INPUT ASCII STRING IN
*MEMORY FROM $800 TO $BFFF.)
*PUT EXAMPLE = 2 TO ASSEMBLE
DO EXAMPLE-2
ELSE
PL = $18
QL = $1A
LEN = $1C
PROMPT = $33
IN = $200
DOSWRM = $3D0
START = $800
END = $C000
HOME = $FC58
GETLN = $FD6A
CROUT = $FD8E
SETKBD = $FE89
SETVID = $FE93
ORG $300
JSR SETKBD ;DISCONNECT DOS
JSR SETVID
JSR HOME
>>> MESSAGE.TYPE
>>> SETPNT.PL ;START
>>> POKE.PROMPT;":"
JSR GETLN ;GET INPUT STRING
DEX
BMI EXIT ;LEAVE IF NO INPUT
STX LEN
>>> ADDX.PL ;QL
NXCMP LDY LEN
>>> CMPSTR.IN ;PL
BNE NEXT
JSR CROUT ;FOUND, PRINT LOCATION
>>> PRCHR."$"
>>> PRADRS.PL
NEXT >>> INCR.PL
>>> INCR.QL
>>> CMPADRS.QL ;END ;FINISHED?
BLT NXCMP
>>> MESSAGE.CALL
EXIT JMP DOSWRM
TYPE ASC "TYPE STRING TO BE FOUND"
BRK ;SIGNALS MSG END
CALL HEX 8D
INV "CALL 768 FOR MORE"
BRK
FIN
*********************
* EXAMPLE 3
*(REVIVE A DEAD APPLESOFT PROG.)
*PUT EXAMPLE = 3 TO ASSEMBLE
DO EXAMPLE-3
ELSE
PL = 6
QL = 8
PROGBEG = $67
VARTAB = $69
FPPNT = $D4F2
DOSCLD = $3D3
ORG $300
>>> TRANS.PROGBEG;PL
>>> ADDNUM.4 ;PL
LDY #0
FNDEND LDA (PL),Y ;FIND END OF FIRST LINE
PHP
>>> INCR.PL
PLP
BNE FNDEND
>>> STIND.PL ;PROGBEG ;FIRST LINK
LOOP DEY ;NOW Y=0
>>> LDIND.PL ;QL ;PUT NEXT LINK IN QL
LDA QL ;IS LINK
ORA QL+1 ;= 0 ?
BEQ FIXPNT
>>> COMPARE.QL ;PL ;VALIDITY CHECK
BLT BADPROG
>>> TRANS.QL ;PL ;SET UP FOR LOOP
JMP LOOP
FIXPNT >>> ADDNUM.2 ;PL ;NOW PL=END PROGRAM
>>> TRANS.PL ;VARTAB
JMP FPPNT ;LET APPLESOFT FINISH IT UP
BADPROG JMP DOSCLD
FIN